#!/bin/bash

# 错误处理函数
handle_error() {
    echo "错误：$1"
    exit 1
}

# 设置时间戳
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# 清理旧的打包文件
rm -rf dist/
mkdir -p dist/

echo "=== 开始打包前端 ==="
cd frontend || handle_error "前端目录不存在"

# 安装依赖并构建
npm install || handle_error "前端依赖安装失败"
npm run build || handle_error "前端构建失败"

# 压缩前端构建文件，使用 --no-mac-metadata 选项忽略 macOS 特有的文件属性
cd dist || handle_error "前端构建目录不存在"
COPYFILE_DISABLE=1 tar --no-mac-metadata -czf ../../dist/frontend_${TIMESTAMP}.tar.gz . || handle_error "前端打包失败"
cd ../..

echo "=== 开始打包后端 ==="
cd backend || handle_error "后端目录不存在"

# 创建后端文件清单
BACKEND_FILES=(
    "app"
    "gunicorn_config.py"
    "requirements.txt"
    "start_service.sh"
    "stop_service.sh"
)

# 创建临时目录
TEMP_DIR="temp_backend"
mkdir -p $TEMP_DIR

# 复制必要的后端文件
for item in "${BACKEND_FILES[@]}"; do
    if [ ! -e "$item" ]; then
        handle_error "后端文件 $item 不存在"
    fi
    cp -r "$item" "$TEMP_DIR/" || handle_error "复制 $item 失败"
done

# 压缩后端文件，使用 --no-mac-metadata 选项忽略 macOS 特有的文件属性
COPYFILE_DISABLE=1 tar --no-mac-metadata -czf ../dist/backend_${TIMESTAMP}.tar.gz -C $TEMP_DIR . || handle_error "后端打包失败"

# 清理临时目录
rm -rf $TEMP_DIR
cd ..

# 复制 Nginx 配置
cp nginx_cardsys_test.conf dist/ || handle_error "复制 Nginx 配置失败"

echo "=== 打包完成 ==="
echo "前端包：dist/frontend_${TIMESTAMP}.tar.gz"
echo "后端包：dist/backend_${TIMESTAMP}.tar.gz"
echo "Nginx配置：dist/nginx_cardsys_test.conf" 